草庐IT

c++ - std::make_pair 与 c++ 11

全部标签

c++ - 仅使用句柄读取/写入文件

工作中遇到一个问题,我不确定答案。假设在一个进程中有一个目录的句柄。句柄设置了RW,可以说它指向桌面。有没有办法只使用句柄来读取文件或将文件写入桌面?感谢任何想法!编辑:澄清一下,这是在Windows上,是一个指向桌面的文件句柄。假设您已经知道句柄的值,并希望在同一进程中使用它,以便将文件读/写到它指向的桌面。允许使用任何代码,包括WindowsAPI。 最佳答案 您可以使用GetFinalPathNameByHandle()在目录句柄上获取路径名,将要写入的文件附加到它的末尾,然后使用CreateFile()和往常一样。

c - WinMain() 到 main() 宏中的奇怪错误

/**converts'WinMain'tothetraditional'main'entrypoint**/#definePRO_MAIN(argc,argv)\int__main(int,LPWSTR*,HINSTANCE,int);\intWINAPIWinMain(HINSTANCE__hInstance,HINSTANCE__hPrevInstance,\LPSTR__szCmdLine,int__nCmdShow)\{\intnArgs;\LPWSTR*szArgvW=CommandLineToArgvW(GetCommandLineW(),&nArgs);\assert(

c++ - 在 Windows 上存储信息有哪些选项?我应该如何阅读这些信息?

我有哪些选项可以在Windows上存储信息?我正在考虑创建一个文件或使用注册表,但如果文件太大并且注册表太容易被用户访问,那么处理该文件可能会很烦人。我不希望最多有100个条目,它们看起来像这样。约翰香蕉马库斯·苹果等等我意识到这不会产生太大的文件,但我不想每次需要信息时都解析它。我正在考虑在启动时将信息读入应用程序,但这不会造成性能问题吗?或者也许它太小了,除了旧计算机外无关紧要?还有其他选择吗?也许我可以加密信息并将其放入注册表中?注册表是否适合放置多个这样的条目?请注意,当我编程时,在提高效率方面有时会有点过火。请原谅我的无知。 最佳答案

c - 测试 C 函数的时序

有一个函数我想测试时间:function()我不确定如何在C中执行此操作,这是我想要执行的操作的伪代码:intmain(){intstartTime=getTime();function();intendTime=getTime();printendTime-startTime;}这是如何在C中完成的? 最佳答案 不幸的是,没有办法使用ANSIC来做到这一点。但是,您可以使用gettimeofday来做到这一点。,一个POSIX函数:#includestructtimevaltv;structtimevalstart_tv;gett

c - 警告 LNK4092 : shared writable section contains relocations

我使用VisualStudio2008,对此警告有疑问。在我们的一个库中,我们设置了“固定基地址”标志(/FIXED)并定义了一个固定基地址。我们用命令声明一个共享部分#pragmacomment(linker,"/SECTION:FOO,RWS")#pragmadata_seg("FOO")当我删除/FIXED标志时,我收到警告LINK:warningLNK4092:sharedwritablesection'FOO'containsrelocations;imagemaynotruncorrectly我知道,有了这个标志,从可执行文件加载时,dll可能会被重新定位。现在我不明白。为

c - 在没有 IDE 的情况下在 Microsoft Windows 7 上进行原生 C 编程

有什么方法可以从Windows命令提示符编写、编译和运行C程序吗?我的意思是,就像使用gcc编译器在Linux终端上可能实现的一样。具体来说,我想知道Microsoft的“cl.exe”C编译器是如何工作的。我该如何安装它?是否可以在记事本等文本编辑器中简单地编写C程序,然后使用命令提示符中的cl.exe编译它并从那里运行它?注意:我不想在Windows上使用任何其他类型的C编程解决方案,例如使用Turbo-C、DevC++等第3方编译器,或使用MingGW等Unix模拟器,甚至VisualStudio等IDE解决方案,Eclipse等,这些我都知道了。我想要的是使用微软自己的cl.e

c - sethostname identifier not found 错误

我想设置本地主机的名称。我正在使用sethostname()函数,但出现如下错误:errorC3861:'sethostname':identifiernotfound.下面是代码片段:WSADATAwsa;///Initialisewinsock///if(WSAStartup(MAKEWORD(2,2),&wsa)!=0){//SocketInitializationFailed///exit(EXIT_FAILURE);}charsetname[128]="Ayesha-PC";sethostname(setname,sizeof(setname));

windows - 带有 std::bind 的代码未编译,错误 C2780:需要 6 个参数 - 提供 8 个

考虑代码:#include#include#includeclassCFileOperationWatcher{public:CFileOperationWatcher(){}virtualvoidonProgressChanged(uint64_tsizeProcessed,uint64_ttotalSize,size_tnumFilesProcessed,size_ttotalNumFiles,uint64_tcurrentFileSizeProcessed,uint64_tcurrentFileSize){}virtual~CFileOperationWatcher(){}voi

CreateFile 在打开 lsass.exe 时失败

我正在开发一个程序,它收集有关系统上运行的进程的一些统计信息。我有一个代码,它可以检索一些常规信息,例如可执行文件版本、发布者等。在我打开lsass.exe之前,代码对我来说工作正常。当我尝试打开文件进行读取时,CreateFile失败并显示错误ERROR_FILE_NOT_FOUND。代码如下:autoFileHandle=CreateFile(file_to_process.c_str(),//C:\Windows\System32\lsass.exeGENERIC_READ,FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE,NU

c++ - 在 Windows 上使用 CMake 2.8.11 构建自定义 Qt 4.8.3 库时出错

我正在尝试将我的Qt项目从QMake迁移到CMake,但是当我尝试使用MSVC10在Windows7上构建我的库时遇到了一些错误。我的CMakeLists.txt文件如下:cmake_minimum_required(VERSION2.8.11)project(MyLibrary)find_package(Qt4REQUIRED)set(CMAKE_AUTOMOCON)set(QT_USE_QTSCRIPTTRUE)include(${QT_USE_FILE})include_directories(${CMAKE_CURRENT_BINARY_DIR}/include${QT_INC